#!/bin/bash

# Archivo de constantes
. ./const.sh

function log(){

	if [ -z $LOGFILE ]; then 
		echo '['$(date +'%a %Y-%m-%d %H:%M:%S %z')']' $1
	else
		echo '['$(date +'%a %Y-%m-%d %H:%M:%S %z')']' $1 >> $LOGFILE
	fi
}

### CheckExist: verifica la existencia de un archivo y arroja error si no existe.
# Arg 1 :path del archivo para verificar existencia

function checkExist(){

	if [ -z $1 ]; then
		log "ERROR checkExist(): No se recibio correctamente el archivo a verificar."
		return 1
	fi
	
	if [ ! -f "$1" ]; then
		log "ERROR checkExist(): No existe $1."
		return 1
	fi

	return 0
}

### CheckExec: verifica permisos de ejecucion sobre archivo y arroja error si no es valido.
# Arg 1 :path del archivo para verificar ejecucion
# Arg 2: mensaje de error para arrojar en caso invalido. Si es nulo se usara uno por defecto

function checkExec(){

	if [ -z $1 ]; then
		log "ERROR checkExec(): No se recibio correctamente el archivo a verificar."
		return 1
	fi

	if [ ! -x $1 ]; then

		if [ ! -z "$2" ]; then
			log "ERROR checkExec(): $2"
		else
			log "ERROR checkExec(): No existe script $1 o no tiene permisos de ejecucion."
		fi
		return 1
	fi
	return 0
}


function limpiarInterfaces(){

	#Borrado de todas las rutas
	`ip route flush all`

	#Borrado de interfaces eth y ppp
	interfaces=`$IFCONFIG | egrep "eth" | sed 's/^\([A-Za-z0-9:]*\).*/\1/'`

	for i in $interfaces
	do
    	`ip addr flush $i`
	done
}

function inicio(){

	if [ "$(whoami)" != 'root' ]; then
		echo "Solo el usuario root puede ejecutar este script."	
		exit 10
	fi

	if [ ! -z $LOGFILE ]; then
		echo "Cualquier salida del script se vera en $LOGFILE"
	fi


}

function debug(){
	set +x

	if [ "$1" == "on" ]; then
		set -x
	fi

}

function checkStatusAbort(){

	if [ $? -ne 0 ]; then 
		log "ERROR INMANEJABLE, se aborta la ejecucion"
		exit 9
	fi
}

function checkStatusContinue(){

	if [ $? -ne 0 ]; then 
		log "WARN , se detecto una salida invalida de una funcion, se continua ejecutando"
	fi
}

function forwardeo(){
	if [[ "$1" != "on" && "$1" != "off" ]]; then
		log "WARN forwardeo(): No se recibio orden clara, por defecto se activa el forward."
	fi
		
	RES="1"

	if [ "$1" == "off" ]; then
		RES="0"
	fi

	#Desactivo el ruteo del sistema operativo
	echo $RES >> /proc/sys/net/ipv4/ip_forward
}

function resolvResto(){
	$DNS_SCRIPT resolv resto
}

function resolvConcaran(){
	$DNS_SCRIPT resolv resto
}
